<?php

namespace tmcore\utils;

/**
 * 价格处理
 * @package tmcore\utils
 */
class Price {

    /**
     * PHP精确计算 主要用于货币的计算用
     * @param float $n1 第一个数
     * @param string $symbol 计算符号 + - * / %
     * @param float $n2 第二个数
     * @param string $scale  精度 默认为小数点后两位
     * @return float
     */
    public static function priceCalc($n1, $symbol, $n2, $scale = '2')
    {
        switch ($symbol) {
            case "+"://加法
                $res = bcadd($n1, $n2, $scale);
                break;
            case "-"://减法
                $res = bcsub($n1, $n2, $scale);
                break;
            case "*"://乘法
                $res = bcmul($n1, $n2, $scale);
                break;
            case "/"://除法
                $res = bcdiv($n1, $n2, $scale);
                break;
            case "%"://求余、取模
                $res = bcmod($n1, $n2, $scale);
                break;
            default:
                $res = "";
                break;
        }
        return floatval($res);
    }

    /**
     * 价格由元转分(用于微信支付单位转换)
     * @param float $price 金额
     * @return int
     */
    public static function priceYuanToFen($price){
        return intval(self::pricecalc(100, "*",$price));
    }

    /**
     * 价格由分转元
     * @param int $price 金额
     * @return float
     */
    public static function priceFenToYuan($price){
        return self::pricecalc(self::priceFormat($price),"/",100);
    }
 
    /**
     * 价格格式化
     *
     * @param int $price 金额
     * @return string
     */
    public static function priceFormat($price){
        return number_format($price, 2, '.', '');
    }
}